package app.fichajes.views;

import java.util.ArrayList;
import java.util.List;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import app.fichajes.adapters.ArrayAdapterListaFichajesPortada;
import app.fichajes.asyncTask.HiloParaImagenes;
import app.fichajes.constants.Constants;
import app.fichajes.data.Equipo;
import app.fichajes.data.Fichaje;
import app.fichajes.main.Main;
import app.fichajes.main.R;
import app.fichajes.utils.ChangeViews;

import com.gi.libraryutility.main.ActivityUtility;

public class AltasYBajas {
	
	private static ListView altas = (ListView)ActivityUtility.getActivityActual().findViewById(R.id.listViewAltas);
	private static ListView bajas = (ListView)ActivityUtility.getActivityActual().findViewById(R.id.listViewBajas);
	private static Equipo equipoEnUso;
	private static List<Equipo> listEquiposVisitados = new ArrayList<Equipo>();
	private static boolean tenemosImgAltas;
	private static boolean tenemosImgBajas;
	
	private static LinearLayout llaltas;
	private static LinearLayout llbajas;
	
	public static void trabajaConEsteEquipo(Equipo equipo){
		tenemosImgAltas = false;
		tenemosImgBajas = false;
		
		altas.setVisibility(View.VISIBLE);
		bajas.setVisibility(View.GONE);
		
		AltasYBajas.equipoEnUso = equipo;
		
		tenemosImgAltas = obtenerImagenes(equipo.getListAltas(), Constants.VER_LISTADO_ALTAS);
	}
	
	private static boolean obtenerImagenes(List<Fichaje> listaDeFichajes, int altasObajas){
		if(!listEquiposVisitados.contains(equipoEnUso))
			new HiloParaImagenes(listaDeFichajes, Constants.VIEW_ALTAS_BAJAS, altasObajas, true).start();
		else{
			ChangeViews.cambiaInclude(Constants.VIEW_ALTAS_BAJAS);
		}
		
		return true;
	}
	
	public static void init(){
		
		if(listEquiposVisitados.contains(equipoEnUso))
			verListadoAltas();
		
		llbajas = (LinearLayout)ActivityUtility.getActivityActual().findViewById(R.id.linearLayoutBajas);
		llbajas.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				if(!tenemosImgBajas)
					tenemosImgBajas = obtenerImagenes(equipoEnUso.getListBajas(), Constants.VER_LISTADO_BAJAS);
				
				altas.setVisibility(View.GONE);
				bajas.setVisibility(View.VISIBLE);
				
				incluyeEquipoEnLista();
				
				verListadoBajas();
			}
		});
		
		llaltas = (LinearLayout)ActivityUtility.getActivityActual().findViewById(R.id.linearLayoutAltas);
		llaltas.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				
				if(!tenemosImgAltas)
					tenemosImgAltas = obtenerImagenes(equipoEnUso.getListAltas(), Constants.VER_LISTADO_ALTAS);
				
				altas.setVisibility(View.VISIBLE);
				bajas.setVisibility(View.GONE);
				
				//incluyeEquipoEnLista(); //<- aquí no hace falta porque altas es lo primero que hace y hasta que no le des a bajas no están los 2 booleanos a true.
				
				verListadoAltas();
			}
		});
		
	}
	
	public static void verListadoAltas(){
		ArrayAdapter<Fichaje> adapterAltas = new ArrayAdapterListaFichajesPortada(Main.getContext(), equipoEnUso.getListAltas());
		altas.setAdapter(adapterAltas);
	}
	
	public static void verListadoBajas(){
		ArrayAdapter<Fichaje> adapterBajas = new ArrayAdapterListaFichajesPortada(Main.getContext(), equipoEnUso.getListBajas());
		bajas.setAdapter(adapterBajas);
	}
	
	private static void incluyeEquipoEnLista(){
		
		if((!listEquiposVisitados.contains(equipoEnUso)) && tenemosImgAltas && tenemosImgBajas)
			listEquiposVisitados.add(equipoEnUso);
	}

}
